library(ggplot2)
library(plotly)
Registered S3 method overwritten by 'data.table':
method from
print.data.table
Registered S3 method overwritten by 'htmlwidgets':
method from
print.htmlwidget tools:rstudio
Attaching package: ‘plotly’
The following object is masked from ‘package:ggplot2’:
last_plot
The following object is masked from ‘package:stats’:
filter
The following object is masked from ‘package:graphics’:
layout
par(mfrow=c(2,3))
plot(x,y, pch=20)
plot(x,y, pch=20)
abline(h=0.5, col='red')
plot(x,y, pch=20)
abline(v=0.5, col='red')
abline(h=0.5, col='red')
plot(x,y, pch=20)
abline(v=0.33, col='red')
abline(h=0.33, col='red')
abline(v=0.66, col='red')
abline(h=0.66, col='red')
plot(x,y, pch=20)
abline(v=0.25, col='red')
abline(h=0.25, col='red')
abline(v=0.50, col='red')
abline(h=0.50, col='red')
abline(v=0.75, col='red')
abline(h=0.75, col='red')
plot(x,y, pch=20)
abline(v=0.2, col='red')
abline(h=0.2, col='red')
abline(v=0.40, col='red')
abline(h=0.40, col='red')
abline(v=0.6, col='red')
abline(h=0.6, col='red')
abline(v=0.8, col='red')
abline(h=0.8, col='red')

rotate <- function(x) t(apply(x, 2, rev))
matrizAsociadaProbabilidad=function(x,y, xmin, xmax, ymin, ymax, tamanio){
m = matrix(0, ncol=tamanio, nrow=tamanio)
for(punInd in c(1:length(x))){ #Por cada punto
for(c in c(1:ncol(m))){
stepX = (xmax-xmin)/tamanio
if(x[punInd]<stepX*c+xmin & x[punInd]>stepX*(c-1)+xmin ){
#Pertenece a columna c-esima
for(f in c(1:nrow(m))){
stepY = (ymax-ymin)/tamanio
if(y[punInd]<stepY*f+xmin & y[punInd]>stepY*(f-1)+xmin ){
m[c,f] = m[c,f]+1
f = nrow(m)
c = ncol(m)
}
}
}
#segui buscando tu columna
}
}
return((rotate(rotate(rotate(m/length(x))))))
}
rango = 0.015
totx = c()
toty = c()
for (j in c(1:10000)) {
x= runif(2, 0.49, 0.51)
y = runif(2, 0.49, 0.51)
for (i in c(2:500)) {
x[i] = x[i-1]+runif(1,-rango,rango)
y[i] = y[i-1]+runif(1,-rango,rango)
}
totx[j]=x[length(x)]
toty[j]=y[length(y)]
}
x = totx
y = toty
m = matrizAsociadaProbabilidad(x,y, 0,1,0,1, 10)
m
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,] 0.0002 0.0008 0.0017 0.0018 0.0024 0.0025 0.0022 0.0018 0.0005
[2,] 0.0007 0.0018 0.0040 0.0048 0.0061 0.0089 0.0067 0.0051 0.0021
[3,] 0.0013 0.0045 0.0091 0.0134 0.0178 0.0174 0.0138 0.0078 0.0042
[4,] 0.0017 0.0063 0.0125 0.0213 0.0305 0.0322 0.0208 0.0123 0.0064
[5,] 0.0029 0.0087 0.0161 0.0321 0.0402 0.0385 0.0280 0.0163 0.0082
[6,] 0.0029 0.0079 0.0192 0.0294 0.0364 0.0426 0.0306 0.0208 0.0076
[7,] 0.0014 0.0072 0.0120 0.0199 0.0310 0.0342 0.0233 0.0141 0.0071
[8,] 0.0015 0.0035 0.0082 0.0142 0.0174 0.0185 0.0138 0.0079 0.0033
[9,] 0.0006 0.0012 0.0040 0.0055 0.0085 0.0068 0.0052 0.0028 0.0013
[10,] 0.0001 0.0005 0.0018 0.0024 0.0035 0.0038 0.0029 0.0012 0.0012
[,10]
[1,] 0.0000
[2,] 0.0010
[3,] 0.0008
[4,] 0.0015
[5,] 0.0030
[6,] 0.0030
[7,] 0.0023
[8,] 0.0010
[9,] 0.0005
[10,] 0.0002
plot(x,y, xlim=c(0,1), ylim=c(0,1))

evaluarEnMatriz=function(m,x,y, xmin, xmax, ymin, ymax, tamanio){
for(c in c(1:ncol(m))){
stepX = (xmax-xmin)/tamanio
if(x<stepX*c+xmin & x>stepX*(c-1)+xmin ){
#Pertenece a columna c-esima
for(f in c(1:nrow(m))){
stepY = (ymax-ymin)/tamanio
if(y<stepY*f+xmin & y>stepY*(f-1)+xmin ){
return(m[c,f])
}
}
}
}
}
evaluarEnMatriz(m, 0.72,0.51,0,1,0,1,10)
[1] 0.0185
z = c(1:length(x))
for (i in 1:length(x)) {
#print(x[i])
if(is.null(x[i])){
x[i]=0.5
}
if(is.null(y[i])){
y[i]=0.5
}
if(x[i]>=1){
x[i]=0.99
}
if(x[i]<=0){
x[i]=0.01
}
if(y[i]>=1){
y[i]=0.99
}
if(y[i]<=0){
y[i]=0.01
}
#print(i)
z[i]= evaluarEnMatriz(m, x[i],y[i],0,1,0,1,10)
}
xs = x
ys = y
zs = z
fig <- plot_ly(x=~xs, y=~ys, z=~zs, type="scatter3d", mode="markers", size = 1)
fig <- fig %>% layout(title = '3 zonas distribuicion',
xaxis = list(title = 'Superficie cubierta',
zeroline = TRUE,
range = c(0, 250)),
yaxis = list(title = 'Habitaciones',
range = c(0,1400)))
fig
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQpgYGB7cn0KbGlicmFyeShnZ3Bsb3QyKQpsaWJyYXJ5KHBsb3RseSkKYGBgCgoKYGBge3J9CnBhcihtZnJvdz1jKDIsMykpCnBsb3QoeCx5LCBwY2g9MjApCnBsb3QoeCx5LCBwY2g9MjApCmFibGluZShoPTAuNSwgY29sPSdyZWQnKQpwbG90KHgseSwgcGNoPTIwKQphYmxpbmUodj0wLjUsIGNvbD0ncmVkJykKYWJsaW5lKGg9MC41LCBjb2w9J3JlZCcpCnBsb3QoeCx5LCBwY2g9MjApCmFibGluZSh2PTAuMzMsIGNvbD0ncmVkJykKYWJsaW5lKGg9MC4zMywgY29sPSdyZWQnKQphYmxpbmUodj0wLjY2LCBjb2w9J3JlZCcpCmFibGluZShoPTAuNjYsIGNvbD0ncmVkJykKcGxvdCh4LHksIHBjaD0yMCkKYWJsaW5lKHY9MC4yNSwgY29sPSdyZWQnKQphYmxpbmUoaD0wLjI1LCBjb2w9J3JlZCcpCmFibGluZSh2PTAuNTAsIGNvbD0ncmVkJykKYWJsaW5lKGg9MC41MCwgY29sPSdyZWQnKQphYmxpbmUodj0wLjc1LCBjb2w9J3JlZCcpCmFibGluZShoPTAuNzUsIGNvbD0ncmVkJykKcGxvdCh4LHksIHBjaD0yMCkKYWJsaW5lKHY9MC4yLCBjb2w9J3JlZCcpCmFibGluZShoPTAuMiwgY29sPSdyZWQnKQphYmxpbmUodj0wLjQwLCBjb2w9J3JlZCcpCmFibGluZShoPTAuNDAsIGNvbD0ncmVkJykKYWJsaW5lKHY9MC42LCBjb2w9J3JlZCcpCmFibGluZShoPTAuNiwgY29sPSdyZWQnKQphYmxpbmUodj0wLjgsIGNvbD0ncmVkJykKYWJsaW5lKGg9MC44LCBjb2w9J3JlZCcpCmBgYApgYGB7cn0Kcm90YXRlIDwtIGZ1bmN0aW9uKHgpIHQoYXBwbHkoeCwgMiwgcmV2KSkKYGBgCgpgYGB7cn0KbWF0cml6QXNvY2lhZGFQcm9iYWJpbGlkYWQ9ZnVuY3Rpb24oeCx5LCB4bWluLCB4bWF4LCB5bWluLCB5bWF4LCB0YW1hbmlvKXsKICBtID0gbWF0cml4KDAsIG5jb2w9dGFtYW5pbywgbnJvdz10YW1hbmlvKQogIGZvcihwdW5JbmQgaW4gYygxOmxlbmd0aCh4KSkpeyAjUG9yIGNhZGEgcHVudG8KICAgIGZvcihjIGluIGMoMTpuY29sKG0pKSl7CiAgICAgIHN0ZXBYID0gKHhtYXgteG1pbikvdGFtYW5pbwogICAgICBpZih4W3B1bkluZF08c3RlcFgqYyt4bWluICYgeFtwdW5JbmRdPnN0ZXBYKihjLTEpK3htaW4gKXsKICAgICAgICAjUGVydGVuZWNlIGEgY29sdW1uYSBjLWVzaW1hCiAgICAgICAgZm9yKGYgaW4gYygxOm5yb3cobSkpKXsKICAgICAgICAgIHN0ZXBZID0gKHltYXgteW1pbikvdGFtYW5pbwogICAgICAgICAgaWYoeVtwdW5JbmRdPHN0ZXBZKmYreG1pbiAmIHlbcHVuSW5kXT5zdGVwWSooZi0xKSt4bWluICl7CiAgICAgICAgICAgIG1bYyxmXSA9IG1bYyxmXSsxCiAgICAgICAgICAgIGYgPSBucm93KG0pCiAgICAgICAgICAgIGMgPSBuY29sKG0pCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgICNzZWd1aSBidXNjYW5kbyB0dSBjb2x1bW5hCiAgICB9CiAgfQogIHJldHVybigocm90YXRlKHJvdGF0ZShyb3RhdGUobS9sZW5ndGgoeCkpKSkpKQp9CmBgYApgYGB7cn0KcmFuZ28gPSAwLjAxNQp0b3R4ID0gYygpCnRvdHkgPSBjKCkKZm9yIChqIGluIGMoMToxMDAwMCkpIHsKICB4PSBydW5pZigyLCAwLjQ5LCAwLjUxKQogIHkgPSBydW5pZigyLCAwLjQ5LCAwLjUxKQogIGZvciAoaSBpbiBjKDI6NTAwKSkgewogICAgeFtpXSA9IHhbaS0xXStydW5pZigxLC1yYW5nbyxyYW5nbykgCiAgICB5W2ldID0geVtpLTFdK3J1bmlmKDEsLXJhbmdvLHJhbmdvKSAKICB9CiAgdG90eFtqXT14W2xlbmd0aCh4KV0KICB0b3R5W2pdPXlbbGVuZ3RoKHkpXQp9CnggPSB0b3R4CnkgPSB0b3R5CmBgYApgYGB7cn0KbSA9IG1hdHJpekFzb2NpYWRhUHJvYmFiaWxpZGFkKHgseSwgMCwxLDAsMSwgMTApCm0KcGxvdCh4LHksIHhsaW09YygwLDEpLCB5bGltPWMoMCwxKSkKYGBgCmBgYHtyfQpldmFsdWFyRW5NYXRyaXo9ZnVuY3Rpb24obSx4LHksIHhtaW4sIHhtYXgsIHltaW4sIHltYXgsIHRhbWFuaW8pewogICAgZm9yKGMgaW4gYygxOm5jb2wobSkpKXsKICAgICAgc3RlcFggPSAoeG1heC14bWluKS90YW1hbmlvCiAgICAgIGlmKHg8c3RlcFgqYyt4bWluICYgeD5zdGVwWCooYy0xKSt4bWluICl7CiAgICAgICAgI1BlcnRlbmVjZSBhIGNvbHVtbmEgYy1lc2ltYQogICAgICAgIGZvcihmIGluIGMoMTpucm93KG0pKSl7CiAgICAgICAgICBzdGVwWSA9ICh5bWF4LXltaW4pL3RhbWFuaW8KICAgICAgICAgIGlmKHk8c3RlcFkqZit4bWluICYgeT5zdGVwWSooZi0xKSt4bWluICl7CiAgICAgICAgICAgIHJldHVybihtW2MsZl0pCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgfQp9CmBgYAoKYGBge3J9CmV2YWx1YXJFbk1hdHJpeihtLCAwLjcyLDAuNTEsMCwxLDAsMSwxMCkKYGBgCgoKYGBge3J9CnogPSBjKDE6bGVuZ3RoKHgpKQpmb3IgKGkgaW4gMTpsZW5ndGgoeCkpIHsKICAjcHJpbnQoeFtpXSkKCiAgaWYoaXMubnVsbCh4W2ldKSl7CiAgICB4W2ldPTAuNQogIH0KICBpZihpcy5udWxsKHlbaV0pKXsKICAgIHlbaV09MC41CiAgfQogIGlmKHhbaV0+PTEpewogICAgeFtpXT0wLjk5CiAgfQogIGlmKHhbaV08PTApewogICAgeFtpXT0wLjAxCiAgfQogIGlmKHlbaV0+PTEpewogICAgeVtpXT0wLjk5CiAgfQogIGlmKHlbaV08PTApewogICAgeVtpXT0wLjAxCiAgfQogICNwcmludChpKQogIHpbaV09IGV2YWx1YXJFbk1hdHJpeihtLCB4W2ldLHlbaV0sMCwxLDAsMSwxMCkKfQpgYGAKCmBgYHtyfQp4cyA9IHgKeXMgPSB5CnpzID0gegpmaWcgPC0gcGxvdF9seSh4PX54cywgeT1+eXMsIHo9fnpzLCB0eXBlPSJzY2F0dGVyM2QiLCBtb2RlPSJtYXJrZXJzIiwgIHNpemUgPSAxKQpmaWcgPC0gZmlnICU+JSBsYXlvdXQodGl0bGUgPSAnMyB6b25hcyBkaXN0cmlidWljaW9uJywKICAgICAgICAgeGF4aXMgPSBsaXN0KHRpdGxlID0gJ1N1cGVyZmljaWUgY3ViaWVydGEnLAogICAgICAgICAgICAgICAgICAgICAgemVyb2xpbmUgPSBUUlVFLAogICAgICAgICAgICAgICAgICAgICAgcmFuZ2UgPSBjKDAsIDI1MCkpLAogICAgICAgICB5YXhpcyA9IGxpc3QodGl0bGUgPSAnSGFiaXRhY2lvbmVzJywKICAgICAgICAgICAgICAgICAgICAgIHJhbmdlID0gYygwLDE0MDApKSkKCmZpZwpgYGAKCgo=